There are many types of computing services, resources and data that computer users and applications need to manage and otherwise access, such as services and data maintained on corporate networks and other remotely accessible sites including intranets and the internet. As there are many different computing platforms, various platform-independent mechanisms and protocols that facilitate the exchange of network information are becoming commonplace, including HTTP (HyperText Transfer Protocol), XML (eXtensible Markup Language), XML Schema, and SOAP (Simple Object Access Protocol). The concept of web services, in which businesses, organizations, and other providers offer services to users and applications, is based on these standards.
To be of value, web services need to enable users and applications to locate them, and exchange the information needed to execute them. To this end, UDDI (Universal Description Discovery & Integration) provides a set of defined services (e.g., in a universal business registry) that help users and applications discover such businesses, organizations, and other web services providers, along with a description of their available web services and the technical interfaces needed to access those services. Although such services may be provided over the internet, services also may be provided in an enterprise environment or other intranet, where the services and their usage may be more controlled. Thus, not just UDDI, but other service registries (such as one based on Microsoft Corporation's Active Directory®) may provide a way of locating a distributed service.
However, at present, client applications do not have a consistent way to interact with such service directories and the services listed thereby. At the same time, many of the services are essentially redundant with respect to their functionality, however client applications do not know a great deal about these services, other than that a type of service is needed, and the type of interfaces that will be needed. Clients may wish to be more selective. For example, the client application may not only want to specify a type of service to the service registry, but also may want to indicate that it does not want just any access point (reference) to a service that matches the type, as the client does not want a service that is often unavailable, unreliable or slow. What is needed is a way for client applications to interact with services through service registries, in a manner that is convenient, straightforward and provides access points that meet client expectations for services.